using System.Collections.Generic;

concept CEquatible[T] 
{
    
}

concept C1[T]
{
    type A1;
    type A2 <: List<int>;
}

concept C2[S, T]
{
    type A1;
    require C1[S, System.B<C2[X, Y].C45, Abc>] using cC1;
    require cC1.A1 <: A2;
    using cC1_2 = C1[Dic<A, cC1.A1>];
    using tQwerty = System.B<C2[X, Y].C45>;
}
